#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "Binary_reader.h"
#include "LPR.h"

char *linea=NULL;
size_t tamano=0;
char *cursor;

void BR_resize();

char *BR_string(FILE *stream)
{
    cursor = linea;
    while (!feof(stream))
    {
        if (cursor >= linea+tamano) BR_resize();

        fread(cursor,1,1,stream);
        if (*cursor == 0) return (linea);
        cursor++;
    }

    if(errno)
    {
        perror(NULL);
        fprintf(stderr, "At%s line %d:\n\tError reading file\n", __FILE__, __LINE__);
        exit(1);
    }

    return linea;
}

int BR_integer(FILE *stream)
{
    int v;
    fread(&v,sizeof(int),1,stream);
    return (v);
}

float BR_float(FILE *stream)
{
    float v;
    fread(&v,sizeof(float),1,stream);

    return (v);
}

void BR_resize()
{
    int desplazamiento = cursor - linea;
    if (tamano ==0)
    {
        tamano = 100;
        linea = malloc(tamano);
    }
    else
    {
        tamano *=2;
        linea = realloc(linea,tamano);
    }
    cursor = linea +desplazamiento;
}

void BR_destruir()
{
    if (linea != NULL)
        free(linea);
}
